package com.example.mq.mqserver.datacenter.mapper;

import com.example.mq.mqserver.core.Binding;
import com.example.mq.mqserver.core.Exchange;
import com.example.mq.mqserver.core.MSGQueue;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;

@Mapper
public interface MetaMapper {
    /**
     * 创建交换机表
     */
    void createExchangeTable();
    /**
     * 创建队列表
     */
    void createQueueTable();
    /**
     * 创建绑定表
     */
    void createBindingTable();


    /**
     * 插入交换机
     * @param exchange
     */
    void insertExchange(Exchange exchange);
    /**
     * 删除交换机
     * @param exchange
     */
    void deleteExchange(Exchange exchange);
    /**
     * 查询所有交换机
     */
    List<Exchange> selectAllExchange();


    /**
     * 插入队列
     * @param queue
     */
    void insertQueue(MSGQueue queue);
    /**
     * 删除队列
     * @param queue
     */
    void deleteQueue(MSGQueue queue);
    /**
     * 查询所有队列
     */
    List<MSGQueue> selectAllQueue();


    /**
     * 插入绑定
     * @param binding
     */
    void insertBinding(Binding binding);
    /**
     * 删除绑定
     * @param binding
     */
    void deleteBinding(Binding binding);
    /**
     * 查询所有绑定
     * @return
     */
    List<Binding> selectAllBinding();
}
